#ifndef ENEMY_H
#define ENEMY_H

#include "Character.hh"
#include <string>
// Enemy.hh
class Enemy : public Character {
public:
    Enemy(const std::string& name, const std::string& desc,
        unsigned health, unsigned attack, unsigned defense);

    virtual std::string toString() const override;
};
//--
// 
// 不同类型的敌人
class Goblin : public Enemy {
public:
    Goblin();
};

class Skeleton : public Enemy {
public:
    Skeleton();
};

class Wizard : public Enemy {
public:
    Wizard();

    // 巫师有特殊攻击
    virtual bool attack(ICharacter& target) override;
};

// 新添加的怪物类型
class Troll : public Enemy {
public:
    Troll();
    virtual bool attack(ICharacter& target) override;
};

class Ghost : public Enemy {
public:
    Ghost();
    virtual bool takeDamage(unsigned damage) override;
};

class Dragon : public Enemy {
public:
    Dragon();
    virtual bool attack(ICharacter& target) override;
};

class DarkKnight : public Enemy {
public:
    DarkKnight();
    virtual bool attack(ICharacter& target) override;
};

#endif // ENEMY_H
